package cn.bonoon.util;

import java.math.BigDecimal;

public class DoubleHelper {

	public static double add(double d0, double d1){
		return BigDecimal.valueOf(d0).add(BigDecimal.valueOf(d1)).doubleValue();
	}

	public static double add(double d0, double... args){
		BigDecimal bd = BigDecimal.valueOf(d0);
		for(double d1 : args){
			bd = bd.add(BigDecimal.valueOf(d1));
		}
		return bd.doubleValue();
	}
	
	public static double add(double d0, Object d1){
		if(d1 instanceof Number){
			return add(d0, ((Number) d1).doubleValue());
		}
		return d0;
	}
	//double相减
	public static double subtract(double d0, double d1){
		return BigDecimal.valueOf(d0).subtract(BigDecimal.valueOf(d1)).doubleValue();
	}
	
	//double与int相乘
	public static double multiply(double d0, int d1){
		BigDecimal multiply =  BigDecimal.valueOf(d0).multiply(BigDecimal.valueOf(d1)).setScale(4, BigDecimal.ROUND_HALF_EVEN);
		return multiply.doubleValue();
	}
	//double与double相乘
	public static double multiply(double d0, double d1){
		BigDecimal multiply =  BigDecimal.valueOf(d0).multiply(BigDecimal.valueOf(d1)).setScale(4, BigDecimal.ROUND_HALF_EVEN);
		return multiply.doubleValue();
	}
	
	//double与double相除
	public static double divide(double d0, double d1){
		double d2 = (double) ((double) d1 == 0d ? 1d : d1);
		return BigDecimal.valueOf(d0).divide(BigDecimal.valueOf(d2),4, BigDecimal.ROUND_HALF_EVEN).doubleValue();
	}
	
	//double与int相除
	public static double divide(double d0, int d1){
		double d2 = (double) ((double) d1 == 0d ? 1d : d1);
		return BigDecimal.valueOf(d0).divide(BigDecimal.valueOf(d2),4, BigDecimal.ROUND_HALF_EVEN).doubleValue();
	}
}
